package com.tensquare.friend.service;

import com.tensquare.friend.client.UserClient;
import com.tensquare.friend.dao.FriendDao;
import com.tensquare.friend.dao.NoFriendDao;
import com.tensquare.friend.pojo.Friend;
import com.tensquare.friend.pojo.NoFriend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class FriendService {
    @Autowired
    private FriendDao friendDao;
    @Autowired
    private NoFriendDao nofriendDao;
    @Autowired
    private UserClient userClient;


    public int friend(String userId, String friendid) {
        //查询u>f存在就返回0提示重复
        Friend user = friendDao.findByUserIdAndFriendId(userId, friendid);
        if(user!=null){
            return 0;
        }
        //查询u>f不存在就往数据库写入u,f,0
        Friend f=new Friend();
        f.setUserid(userId);
        f.setFriendid(friendid);
        f.setIslike("0");
        friendDao.insert(f);
        //查询f>u存在就往数据库写入u,f,1 || f,u,1
        Friend friend = friendDao.findByUserIdAndFriendId(friendid, userId);
        if(friend!=null){
            friendDao.updateByUserIdAndFriendIdToX(friendid,userId,"1");
            friendDao.updateByUserIdAndFriendIdToX(userId,friendid,"1");
        }
        //更新User的粉丝数和关注数
        userClient.updateByUserAndFriend(userId,friendid,1);
        return 1;
        //不存在就啥也不干呗
    }

    public int nofriend(String userId, String friendid) {
       //查询u>f存在就返回0提示重复
        Friend user = nofriendDao.findByUserIdAndFriendId(userId, friendid);
        if(user!=null){
            return 0;
        }
        //查询u>f不存在就往数据库写入u,f,0
        NoFriend noFriend=new NoFriend();
        noFriend.setUserid(userId);
        noFriend.setFriendid(friendid);
        nofriendDao.insert(noFriend);
        //查询f>u存在就往数据库写入u,f || f,u
        return 1;
    }

    public void deleteFriend(String userid, String friendid) {
        //删除好友顾名思义 user表 user关注数减一friend粉丝数减一
        userClient.updateByUserAndFriend(userid,friendid,-1);
        //第二就是friend表中tb_friend 表中 user>friend 删除 且 friend>user中islike=0
        friendDao.deleteByUserAndFriend(userid,friendid);
        friendDao.updateByUserIdAndFriendIdToX(friendid,userid,"0");
        //第三就是tb_nofriend 表中增加User》Friend
        NoFriend noFriend=new NoFriend();
        noFriend.setFriendid(friendid);
        noFriend.setUserid(userid);
        nofriendDao.insert(noFriend);
    }
}
